{
 "cells": [
  {
   "cell_type": "raw",
   "id": "afaf8039",
   "metadata": {},
   "source": [
    "---\n",
    "sidebar_label: Nomic\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e49f1e0d",
   "metadata": {},
   "source": [
    "# NomicEmbeddings\n",
    "\n",
    "This notebook covers how to get started with Nomic embedding models.\n",
    "\n",
    "## Installation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4c3bef91",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install package\n",
    "!pip install -U langchain-nomic"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b4f3e15",
   "metadata": {},
   "source": [
    "## Environment Setup\n",
    "\n",
    "Make sure to set the following environment variables:\n",
    "\n",
    "- `NOMIC_API_KEY`\n",
    "\n",
    "## Usage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "62e0dbc3",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "from langchain_nomic.embeddings import NomicEmbeddings\n",
    "\n",
    "embeddings = NomicEmbeddings(model=\"nomic-embed-text-v1.5\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12fcfb4b",
   "metadata": {},
   "outputs": [],
   "source": [
    "embeddings.embed_query(\"My query to look up\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1f2e6104",
   "metadata": {},
   "outputs": [],
   "source": [
    "embeddings.embed_documents(\n",
    "    [\"This is a content of the document\", \"This is another document\"]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "46739f68",
   "metadata": {},
   "outputs": [],
   "source": [
    "# async embed query\n",
    "await embeddings.aembed_query(\"My query to look up\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e48632ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "# async embed documents\n",
    "await embeddings.aembed_documents(\n",
    "    [\"This is a content of the document\", \"This is another document\"]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7a331dc3",
   "metadata": {},
   "source": [
    "### Custom Dimensionality\n",
    "\n",
    "Nomic's `nomic-embed-text-v1.5` model was [trained with Matryoshka learning](https://blog.nomic.ai/posts/nomic-embed-matryoshka) to enable variable-length embeddings with a single model. This means that you can specify the dimensionality of the embeddings at inference time. The model supports dimensionality from 64 to 768."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "993f65c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "embeddings = NomicEmbeddings(model=\"nomic-embed-text-v1.5\", dimensionality=256)\n",
    "\n",
    "embeddings.embed_query(\"My query to look up\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
